{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**通用最佳实践回顾**\n",
    "\n",
    "- `std::map<Key, T>` 维护严格弱序（默认 `std::less<Key>`），查找/插入/删除与 `lower_bound`/`upper_bound`/`equal_range` 等范围操作均为 `O(log n)`，适合需要保持键有序的配置、字典、前缀/范围查询、时间序列索引、调度表、符号表以及集合合并/差集/区间裁剪等场景。\n",
    "- 多数实现基于红黑树，节点独立分配导致内存额外开销；在读多写少或数据量较小的场景可评估 `std::flat_map` 等顺序容器替代，必要时使用自定义分配器优化节点分配（容器自身无 `reserve` 概念）。\n",
    "- 插入不会使现有迭代器、引用、指针失效；删除仅影响被移除元素。若需修改键值，使用 `extract`/`node_handle` 拿出节点后调整键再插入，避免破坏有序性。\n",
    "- 使用透明比较器（如 `std::less<>`）以支持异构查找、减少临时对象；结合 `try_emplace` 与 `insert_or_assign` 降低冗余构造。\n",
    "- 合理利用范围查询接口进行窗口操作或区间裁剪；遍历删除时采用“先后增再删除”模式确保迭代器有效。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "| 序号 | 工程场景                              | 文件名                       | 说明要点                                                     | 可运行示例代码             |\n",
    "| ---- | ------------------------------------- | ---------------------------- | ------------------------------------------------------------ | -------------------------- |\n",
    "| 1    | 有序配置/字典；范围/前缀查询          | `map_prefix_query.cpp`       | 使用 `lower_bound` + 前缀判定筛选配置条目；透明比较器支持异构查找 | 示例 1：有序配置前缀查询   |\n",
    "| 2    | 时间序列按时间戳检索                  | `map_time_series_lookup.cpp` | `lower_bound` 定位最近时间点；展示插入/查找均为 `O(log n)`   | 示例 2：时间序列检索       |\n",
    "| 3    | 调度表/时间轮中的有序槽               | `map_scheduler.cpp`          | `upper_bound` 找到截止任务；遍历时使用 `erase` 返回值确保迭代器安全 | 示例 3：调度表到期任务执行 |\n",
    "| 4    | 符号表/编译器作用域链（按序遍历生成） | `map_symbol_table.cpp`       | 多层作用域分别存储在 `map` 中；有序遍历输出作用域内容        | 示例 4：多层作用域符号表   |\n",
    "| 5    | 合并/差集/区间裁剪                    | `map_range_trim.cpp`         | 自定义区间结构；结合 `lower_bound` 与遍历删除实现区间合并及裁剪 | 示例 5：区间合并与裁剪     |"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "- 示例 1：有序配置的前缀查询（map_prefix_query.cpp）\n",
    "- 示例 2：时间序列 lower_bound 检索（map_time_series_lookup.cpp）\n",
    "- 示例 3：调度表到期任务执行（map_scheduler.cpp）\n",
    "- 示例 4：多层作用域符号表（map_symbol_table.cpp）\n",
    "- 示例 5：区间合并与裁剪（map_range_trim.cpp）"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "C++17",
   "language": "C++17",
   "name": "xcpp17"
  },
  "language_info": {
   "name": "C++17"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
